const app = getApp();
var login = require('../utils/uctoo-login.js');
var host = require('../config.js').host;
var requestNum = 0;
var responseNum = 0;

/* 验证登陆的GET请求 */
function requestGet(url, params, successCallback, msg, failCallback) {
  let token = wx.getStorageSync('token');
  if (!token) {
    this.getToken(url, params, successCallback, msg, failCallback)
    // wx.showModal({
    //   title: '提示',
    //   content: '本操作需要登录',
    //   confirmText: '立即登录',
    //   cancelText: '暂不登录',
    //   success(res) {
         
    //     if (res.confirm) {
    //       wx.navigateTo({
    //         url: '/pages/login/login',
    //       })
    //     } else {
    //       wx.switchTab({
    //         url: '/pages/index/index',
    //       })
    //     }
    //   }
    // })
    return;
  }
 
  if (token) {
    // requestNum++;
    wx.request({
      url: url,
      data: params,
      method: 'GET',
      header: {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/x-www-form-urlencoded',
        'X-Requested-With': 'XMLHttpRequest'
      },
      success: function (res) {
        wx.hideLoading();
        // responseNum++;
        if (res.header.SESSIONSTATUS == "TIMEOUT") {
          reLogin(() => {
            request(url, params, successCallback, msg, failCallback);
          });
        } else {
          typeof successCallback == "function" && successCallback(res);
        }
      },
      fail: function (res) {
        wx.hideLoading();
        typeof failCallback == "function" && failCallback(res);
      }
    });
  } else {
    reLogin(() => {
      request(url, params, successCallback, msg, failCallback);
    });
  }
}
function getToken(url, params, successCallback, msg, failCallback){
 

  var openid = wx.getStorageSync('openid')
  var appid = wx.getStorageSync('appid')
  
  wx.request({
    url: host + '/getTokenByOpenId',
    data: {
      openId: openid,
      wxAppId:appid,
      userType: 2,
      ownerAppType: 2
    },
    method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
    header: {
      'content-type': 'application/json'
    }, // 设置请求的 header
    success: function (res) {
      if (res.data.code == '200') {
        console.log("token=="+res.data.token)
        wx.setStorageSync('token', res.data.token)
        requestGet(url, params, successCallback, msg, failCallback);
        getInfo(res.data.token);
      } else {
        getToken(url, params, successCallback, msg, failCallback)
        // wx.showToast({
        //   title: res.data.msg,
        //   icon: 'none'
        // })
      }
    }
  });
}

function getInfo(token) {
  wx.request({
    url: host + '/xcx/customer/getUserInfo',
    method: 'GET',
    header: {
      'Authorization': 'Bearer ' + token, 
      'X-Requested-With': 'XMLHttpRequest'
    },
    success: function (res) {
      if (res.data.code == '200') {
        getApp().globalData.userInfo=res.data.data
      }
    },
  });
  // let that = this;
  // network.requestGet(host + '/xcx/customer/getUserInfo', {}, res => { 
  //   if (res.data.code == 200) {
  //     getApp().globalData.userInfo=res.data.data
  //   }
  // })
} 

/* 验证登陆的POST请求 */
function requestPost(url, params, successCallback, msg, failCallback) {
  let token = wx.getStorageSync('token');
  if (!token) {
    this.postToken(url, params, successCallback, msg, failCallback)
    // wx.showModal({
    //   title: '提示',
    //   content: '本操作需要登录',
    //   confirmText: '立即登录',
    //   cancelText: '暂不登录',
    //   success(res) {
    //     if (res.confirm) {
    //       wx.navigateTo({
    //         url: '/pages/login/login',
    //       })
    //     } else {
    //       wx.switchTab({
    //         url: '/pages/index/index',
    //       })
    //     }
    //   }
    // })
    return;
  }
 
  wx.showLoading({
    title: msg ? msg : '加载中...',
    mask: true,
    success: function (req) {
      if (token) {
        // requestNum++;
        wx.request({
          url: url,
          data: params,
          method: 'POST',
          header: {
            'Authorization': 'Bearer ' + token,
            // 'content-type': 'application/x-www-form-urlencoded',
            'X-Requested-With': 'XMLHttpRequest'
          },
          success: function (res) {
            wx.hideLoading();
            // responseNum++;
            if (res.header.SESSIONSTATUS == "TIMEOUT") {
              reLogin(() => {
                request(url, params, successCallback, msg, failCallback);
              });
            } else {
              typeof successCallback == "function" && successCallback(res);
            }
          },
          fail: function (res) {
            wx.hideLoading();
            typeof failCallback == "function" && failCallback(res);
          }
        });
      } else {
        reLogin(() => {
          request(url, params, successCallback, msg, failCallback);
        });
      }
    }
  });
}
function postToken(url, params, successCallback, msg, failCallback){
 

  var openid = wx.getStorageSync('openid')
  var appid = wx.getStorageSync('appid')
  wx.request({
    url: host + '/getTokenByOpenId',
    data: {
      openId: openid,
      wxAppId:appid,
      userType: 2,
      ownerAppType: 2
    },
    method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
    header: {
      'content-type': 'application/json'
    }, // 设置请求的 header
    success: function (res) {
      if (res.data.code == '200') {
        console.log("token=="+res.data.token)
        wx.setStorageSync('token', res.data.token)
        requestPost(url, params, successCallback, msg, failCallback);
        getInfo(res.data.token);
      } else {
        postToken(url, params, successCallback, msg, failCallback)
        // wx.showToast({
        //   title: res.data.msg,
        //   icon: 'none'
        // })
      }
    }
  });
}
/* 不验证登陆GET请求 */
function nonAuthRequestGet(url, params, successCallback, msg, failCallback) {
  // requestNum++
  wx.showLoading({
    title: msg ? msg : '加载中...',
    mask: true,
    success: function () {
      wx.request({
        url: url,
        data: params,
        method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
        // header: { 'content-type': 'application/x-www-form-urlencoded' }, // 设置请求的 header
        success: function (res) {
          wx.hideLoading();
          typeof successCallback == "function" && successCallback(res);
        },
        fail: function (res) {
          wx.hideLoading();
          typeof failCallback == "function" && failCallback(res);
        }
      });
    }
  });
}

/* 不验证登陆POST请求 */
function nonAuthRequestPost(url, params, successCallback, msg, failCallback) {
  // requestNum++
  wx.showLoading({
    title: msg ? msg : '加载中...',
    mask: true,
    success: function () {
      wx.request({
        url: url,
        data: params,
        method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
        // header: { 'content-type': 'application/x-www-form-urlencoded' }, // 设置请求的 header
        success: function (res) {
          wx.hideLoading();
          typeof successCallback == "function" && successCallback(res);
        },
        fail: function (res) {
          wx.hideLoading();
          typeof failCallback == "function" && failCallback(res);
        }
      });
    }
  });
}

function uploadFileLoading(url, filePath, successCallback, msg, failCallback) {
  let token = wx.getStorageSync('token');
  if (!token) {
    // wx.showModal({
    //   title: '提示',
    //   content: '本操作需要登录',
    //   confirmText: '立即登录',
    //   cancelText: '暂不登录',
    //   success(res) {
    //     if (res.confirm) {
    //       wx.navigateTo({
    //         url: '/pages/login/login',
    //       })
    //     } else {
    //       wx.switchTab({
    //         url: '/pages/index/index',
    //       })
    //     }
    //   }
    // })
    return;
  }
  wx.showLoading({
    title: msg ? msg : '上传图片...',
    success: function () {
      wx.uploadFile({
        url: host + url,
        filePath: filePath,
        name: 'file',
        header: {
          'Authorization': 'Bearer ' + token,
          // 'content-type': 'multipart/form-data',
          'X-Requested-With': 'XMLHttpRequest'
        },
        success: function (res) {
          wx.hideLoading();
          if (res.header && res.header.SESSIONSTATUS == "TIMEOUT") {
            reLogin(() => {
              uploadFileLoading(url, filePath, successCallback, msg, failCallback);
            });
          } else {
            typeof successCallback == "function" && successCallback(res);
          }
        },
        fail: function (res) {
          wx.hideLoading();
          typeof failCallback == "function" && failCallback(res);
        }
      })
    }
  });
}

function validatePhone() {
  if (!app.globalData.phone) {
    wx.navigateTo({
      url: '../setPhone/setPhone',
    })
  }
}

function reLogin(callback) {
  // let token = wx.getStorageSync('token');
  // if (token) {
  //   wx.login({
  //     success: res => {
  //       reLogin2(token, res.code, callback);
  //     },
  //     fail: () => {
  //       wx.showModal({
  //         title: '提示',
  //         content: '本操作需要登录',
  //         confirmText: '立即登录',
  //         cancelText: '暂不登录',
  //         success(res) {
  //           if (res.confirm) {
  //             wx.navigateTo({
  //               url: '/pages/login/login',
  //             })
  //           } else {
  //             wx.switchTab({
  //               url: '/pages/index/index',
  //             })
  //           }
  //         }
  //       })
  //     }
  //   })
  // } else {
  //   wx.showModal({
  //     title: '提示',
  //     content: '本操作需要登录',
  //     confirmText: '立即登录',
  //     cancelText: '暂不登录',
  //     success(res) {
  //       if (res.confirm) {
  //         wx.navigateTo({
  //           url: '/pages/login/login',
  //         })
  //       } else {
  //         wx.switchTab({
  //           url: '/pages/index/index',
  //         })
  //       }
  //     }
  //   })
  // }
}

function reLogin2(token, code, callback) {
  // wx.request({
  //   url: host + 'action/LoginAction/reLogin',
  //   data: {
  //     id: token,
  //     code: code
  //   },
  //   method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  //   header: {
  //     'content-type': 'application/x-www-form-urlencoded'
  //   }, // 设置请求的 header
  //   success: function (res) {
  //     if (res.data.state) {
  //       app.globalData['sessionId'] = res.data.sessionId;
  //       typeof callback == "function" && callback();
  //     } else {
  //       wx.showModal({
  //         title: '提示',
  //         content: '本操作需要登录',
  //         confirmText: '立即登录',
  //         cancelText: '暂不登录',
  //         success(res) {
  //           if (res.confirm) {
  //             wx.navigateTo({
  //               url: '/pages/login/login',
  //             })
  //           } else {
  //             wx.switchTab({
  //               url: '/pages/index/index',
  //             })
  //           }
  //         }
  //       })
  //     }
  //   }
  // });
}
function loginAlert(callback){
  // wx.checkSession({
  //   success () {
  //     //session_key 未过期，并且在本生命周期一直有效
  //   },
  //   fail () {
  //     // session_key 已经失效，需要重新执行登录流程
  //     wx.login() //重新登录
  //   }
  // })
}




module.exports = {
  requestPost: requestPost,
  requestGet: requestGet,
  nonAuthRequestGet: nonAuthRequestGet,
  nonAuthRequestPost: nonAuthRequestPost,
  uploadFileLoading: uploadFileLoading,
  validatePhone: validatePhone ,
  getToken: getToken
}